<?php

class Application_Model_PaczKurMapper
{
 protected $_dbTable;

  	public function init()
  	{
  		$this->_dbTable = new Application_Model_DbTable_PaczKur();
  	}

	public function setDbTable($dbTable)
	{
		$dbTable = new $dbTable();

        	if (!$dbTable instanceof Zend_Db_Table_Abstract)
        	{
            		throw new Exception('Invalid table data gateway provided');
        	}

        	$this->_dbTable = $dbTable;
        	return $this;
    	}

    	public function getDbTable()
    	{
    		if (null == $this->_dbTable)
        	{
            		$this->setDbTable('Application_Model_DbTable_PaczKur');
        	}
        	return $this->_dbTable;
    	}

        public function dodaj(Application_Model_PaczKur $przesylka)
	{
        	$data = array(
                                'id_przesylki' => $przesylka->getIdPrzesylka(),
                                'id_kur' => $przesylka->getIdKurier()
        		);

        	$this->getDbTable()->insert($data);
    	}

    	public function edytuj($id,  Application_Model_Visits $wizyta)
	{
        	$data = array(
        			'data' => $wizyta->getData(),
        			'godzina'   => $wizyta->getGodzina()
                        );

        	$where = $this->getDbTable()->getAdapter()->quoteInto('id_wizyty = ?', $id);

        	$this->getDbTable()->update($data,$where);
    	}

    	public function usun($id)
	{
		$where = $this->getDbTable()->getAdapter()->quoteInto('id_wizyty = ?', $id);
        	$this->getDbTable()->delete($where);
    	}

        public function zwrocWszystkieNowe($id)
    	{
    		 $resultSet = $this->getDbTable()->fetchAll($this->_dbTable->
                        select()->where('id_lekarza = ? AND data > NOW()',$id)
                                ->order('data ASC')
                                ->order('godzina ASC')
                                ->group('data'));

    		$wizyty  = array();

        	foreach ($resultSet as $row)
        	 {
        	   	$wizyta = new Application_Model_Visits();
                        $rowL = $row->findParentRow('Application_Model_DbTable_Users','Lekarz');
        	   	
                        $wizyta->setIdLekarza($rowL['id_uzytkownika']);
                        $wizyta->setData($row['data']);
                        $wizyta->setImieLekarza($rowL['imie']);
                        $wizyta->setNazwiskoLekarza($rowL['nazwisko']);

                        $wizyty[] = $wizyta;
       		}
       		return $wizyty;
   	}

        public function zwrocWszystkieStare($id)
    	{
    		 $resultSet = $this->getDbTable()->fetchAll($this->_dbTable->
                        select()->where('id_lekarza = ? AND data < NOW()',$id)
                                ->order('data ASC')
                                ->order('godzina ASC')
                                ->group('data'));

    		$wizyty  = array();

        	foreach ($resultSet as $row)
        	 {
        	   	$wizyta = new Application_Model_Visits();
                        $rowL = $row->findParentRow('Application_Model_DbTable_Users','Lekarz');

                        $wizyta->setIdLekarza($rowL['id_uzytkownika']);
                        $wizyta->setData($row['data']);
                        $wizyta->setImieLekarza($rowL['imie']);
                        $wizyta->setNazwiskoLekarza($rowL['nazwisko']);
                        
                        $wizyty[] = $wizyta;
       		}
       		return $wizyty;
   	}

        public function zwrocWszystkieNaDzien($id, $data)
    	{
    		 $resultSet = $this->getDbTable()->fetchAll($this->_dbTable->
                        select()->where('id_lekarza = ?',$id)
                                ->where('data = ?', $data)
                                ->order('data ASC')
                                ->order('godzina ASC'));

    		$wizyty  = array();

                foreach ($resultSet as $row)
        	 {
        	   	$wizyta = new Application_Model_Visits();
                        $rowL = $row->findParentRow('Application_Model_DbTable_Users','Lekarz');
        	   	$rowP = $row->findParentRow('Application_Model_DbTable_Users','Pacjent');
                        $rowS = $row->findParentRow('Application_Model_DbTable_StatusVisits','Status');

                        $wizyta->setIdWizyty($row['id_wizyty']);
                        $wizyta->setIdGrafik($row['id_grafik']);
                        $wizyta->setPeselPacjent($rowP['pesel']);
                        $wizyta->setIdPacjenta($rowP['id_uzytkownika']);
                        $wizyta->setIdLekarza($rowL['id_uzytkownika']);
                        $wizyta->setData($row['data']);
                        $wizyta->setGodzina($row['godzina']);
                        $wizyta->setImiePacjenta($rowP['imie']);
                        $wizyta->setNazwiskoPacjenta($rowP['nazwisko']);
                        $wizyta->setImieLekarza($rowL['imie']);
                        $wizyta->setNazwiskoLekarza($rowL['nazwisko']);
                        $wizyta->setIdStatus($rowS['status']);

        	   	$wizyty[] = $wizyta;
       		}
                
       		return $wizyty;
   	}

        public function zwrocWszystkieNaTydzien($id, $data_od, $data_do)
    	{
    		 $resultSet = $this->getDbTable()->fetchAll($this->_dbTable->
                        select()->where('id_lekarza = ?',$id)
                                ->where('data > ?', $data_od)
                                ->where('data < ?', $data_do)
                                ->order('data ASC')
                                ->order('godzina ASC'));

    		$wizyty  = array();

        	foreach ($resultSet as $row)
        	 {
        	   	$wizyta = new Application_Model_Visits();
                        $rowL = $row->findParentRow('Application_Model_DbTable_Users','Lekarz');
        	   	$rowP = $row->findParentRow('Application_Model_DbTable_Users','Pacjent');
                        $rowS = $row->findParentRow('Application_Model_DbTable_StatusVisits','Status');

                        $wizyta->setIdWizyty($row['id_wizyty']);
                        $wizyta->setIdGrafik($row['id_grafik']);
                        $wizyta->setPeselPacjent($rowP['pesel']);
                        $wizyta->setIdPacjenta($rowP['id_uzytkownika']);
                        $wizyta->setIdLekarza($rowL['id_uzytkownika']);
                        $wizyta->setData($row['data']);
                        $wizyta->setGodzina($row['godzina']);
                        $wizyta->setImiePacjenta($rowP['imie']);
                        $wizyta->setNazwiskoPacjenta($rowP['nazwisko']);
                        $wizyta->setImieLekarza($rowL['imie']);
                        $wizyta->setNazwiskoLekarza($rowL['nazwisko']);
                        $wizyta->setIdStatus($rowS['status']);

                        $wizyty[] = $wizyta;
       		}
       		return $wizyty;
   	}

        public function zwrocWszystkieDlaLekarzaIDNowe($id)
    	{
                $resultSet = $this->getDbTable()->fetchAll($this->_dbTable->
                        select()->where('id_lekarza = ? AND data > NOW()',$id)
                                ->order('data ASC')
                                ->order('godzina ASC'));

    		$wizyty  = array();

        	foreach ($resultSet as $row)
        	 {
        	   	$wizyta = new Application_Model_Visits();
                        $rowP = $row->findParentRow('Application_Model_DbTable_Users','Pacjent');
                        $rowS = $row->findParentRow('Application_Model_DbTable_StatusVisits','Status');

                        $wizyta->setIdWizyty($row['id_wizyty']);
                        $wizyta->setIdGrafik($row['id_grafik']);
                        $wizyta->setIdPacjenta($row['id_pacjenta']);
                        $wizyta->setIdLekarza($row['id_lekarza']);
                        $wizyta->setData($row['data']);
                        $wizyta->setGodzina($row['godzina']);
                        $wizyta->setImiePacjenta($rowP['imie']);
                        $wizyta->setNazwiskoPacjenta($rowP['nazwisko']);
                        $wizyta->setIdStatus($rowS['status']);

        	   	$wizyty[] = $wizyta;
       		}
       		return $wizyty;
   	}

        public function zwrocWszystkieDlaPacjentaIDNowe($id)
    	{
                $resultSet = $this->getDbTable()->fetchAll($this->_dbTable->
                        select()->where('id_pacjenta = ? AND data > NOW()',$id)
                                ->order('data ASC')
                                ->order('godzina ASC'));

    		$wizyty  = array();

        	foreach ($resultSet as $row)
        	 {
        	   	$wizyta = new Application_Model_Visits();
                        $rowL = $row->findParentRow('Application_Model_DbTable_Users','Lekarz');
                        $rowS = $row->findParentRow('Application_Model_DbTable_StatusVisits','Status');

                        $wizyta->setIdWizyty($row['id_wizyty']);
                        $wizyta->setIdGrafik($row['id_grafik']);
                        $wizyta->setIdPacjenta($row['id_pacjenta']);
                        $wizyta->setIdLekarza($row['id_lekarza']);
                        $wizyta->setData($row['data']);
                        $wizyta->setGodzina($row['godzina']);
                        $wizyta->setImieLekarza($rowL['imie']);
                        $wizyta->setNazwiskoLekarza($rowL['nazwisko']);
                        $wizyta->setIdStatus($rowS['status']);

        	   	$wizyty[] = $wizyta;
       		}
       		return $wizyty;
   	}

        public function zwrocWszystkieDlaLekarzaIDStare($id)
    	{
                $resultSet = $this->getDbTable()->fetchAll($this->_dbTable->
                        select()->where('id_lekarza = ? AND data < NOW()',$id)
                                ->order('data ASC')
                                ->order('godzina ASC'));

    		$wizyty  = array();

        	foreach ($resultSet as $row)
        	 {
        	   	$wizyta = new Application_Model_Visits();
                        $rowP = $row->findParentRow('Application_Model_DbTable_Users','Pacjent');
                        $rowS = $row->findParentRow('Application_Model_DbTable_StatusVisits','Status');

                        $wizyta->setIdWizyty($row['id_wizyty']);
                        $wizyta->setIdGrafik($row['id_grafik']);
                        $wizyta->setIdPacjenta($row['id_pacjenta']);
                        $wizyta->setIdLekarza($row['id_lekarza']);
                        $wizyta->setData($row['data']);
                        $wizyta->setGodzina($row['godzina']);
                        $wizyta->setImiePacjenta($rowP['imie']);
                        $wizyta->setNazwiskoPacjenta($rowP['nazwisko']);
                        $wizyta->setIdStatus($rowS['status']);

        	   	$wizyty[] = $wizyta;
       		}
       		return $wizyty;
   	}

        public function zwrocWszystkieDlaPacjentaIDStare($id)
    	{
                $resultSet = $this->getDbTable()->fetchAll($this->_dbTable->
                        select()->where('id_pacjenta = ? AND data < NOW()',$id)
                                ->order('data ASC')
                                ->order('godzina ASC'));

    		$wizyty  = array();

        	foreach ($resultSet as $row)
        	 {
        	   	$wizyta = new Application_Model_Visits();
                        $rowL = $row->findParentRow('Application_Model_DbTable_Users','Lekarz');
                        $rowS = $row->findParentRow('Application_Model_DbTable_StatusVisits','Status');

                        $wizyta->setIdWizyty($row['id_wizyty']);
                        $wizyta->setIdGrafik($row['id_grafik']);
                        $wizyta->setIdPacjenta($row['id_pacjenta']);
                        $wizyta->setIdLekarza($row['id_lekarza']);
                        $wizyta->setData($row['data']);
                        $wizyta->setGodzina($row['godzina']);
                        $wizyta->setImieLekarza($rowL['imie']);
                        $wizyta->setNazwiskoLekarza($rowL['nazwisko']);
                        $wizyta->setIdStatus($rowS['status']);

        	   	$wizyty[] = $wizyta;
       		}
       		return $wizyty;
   	}

        public function zwrocWizyte($id,$wizyta)
    	{
                $resultSet = $this->getDbTable()->find($id);
                $row = $resultSet->current();
                $rowS = $row->findParentRow('Application_Model_DbTable_StatusVisits','Status');
                
                $wizyta->setIdWizyty($row['id_wizyty']);
                $wizyta->setIdGrafik($row['id_grafik']);
        	$wizyta->setIdPacjenta($row['id_pacjenta']);
                $wizyta->setIdLekarza($row['id_lekarza']);
                $wizyta->setData($row['data']);
                $wizyta->setGodzina($row['godzina']);
                $wizyta->setIdStatus($rowS['status']);
   	}

        public function zmienStatus($id,$status)
        {
            $data = array('id_status'=> $status);

            $where = $this->getDbTable()->getAdapter()->quoteInto('id_wizyty = ?', $id);

            $this->getDbTable()->update($data,$where);
        }

}

